
// ==================== 基础配置 ====================
export const IS_MICRO = false;                                  // 是否为微服务架构


// 根据环境选择协议和域名
export const baseURL = 'http://192.168.1.58:9999';                      // 后端服务地址
export const SECRET_KEY = 'thanks,pig4cloud';                   // 密码加密密钥
export const OAUTH2_CLIENT = 'custom:custom';                   // OAuth2客户端信息
export const FORM_CONTENT_TYPE = 'application/x-www-form-urlencoded';







/**
 * 生成OAuth2 Basic认证头
 * @returns Basic认证字符串
 */
export const generateBasicAuth = () : string => {
	const clientInfo = OAUTH2_CLIENT;
	// 使用兼容小程序的方式进行Base64编码
	const uint8Array = new Uint8Array(clientInfo.length);
	for (let i = 0; i < clientInfo.length; i++) {
		uint8Array[i] = clientInfo.charCodeAt(i);
	}
	const arrayBuffer = uint8Array.buffer as ArrayBuffer;
	return 'Basic ' + uni.arrayBufferToBase64(arrayBuffer);
};

// ==================== 前缀获取函数 ====================
/**
 * 获取任务相关API前缀
 * @returns 任务API前缀
 */
export const getTaskApiPrefix = () : string => {
	return IS_MICRO ? '/studyplan/App' : '/admin/App';
};

/**
 * 获取用户相关API前缀
 * @returns 用户API前缀
 */
export const getUserApiPrefix = () : string => {
	return IS_MICRO ? '/admin' : '/admin';
};

/**
 * 获取认证相关API前缀
 * @returns 认证API前缀
 */
export const getAuthApiPrefix = () : string => {
	return IS_MICRO ? '/auth' : '/admin';
};

/**
 * 获取通用API前缀
 * @returns 通用API前缀
 */
export const getCommonApiPrefix = () : string => {
	return IS_MICRO ? '/studyplan' : '/admin';
};


// ==================== 配置管理函数 ====================
/**
 * 获取当前环境配置
 */
export const getEnvConfig = () => ({
	IS_MICRO,
	baseURL,
	SECRET_KEY,
	OAUTH2_CLIENT,
	mode: IS_MICRO ? '微服务模式' : '单体模式'
});

/**
 * 获取当前架构模式
 */
export const getArchitectureMode = () => IS_MICRO ? '微服务模式' : '单体模式';

// ==================== 兼容性导出 ====================
/** @deprecated 使用具体的前缀获取函数替代，如 getTaskApiPrefix(), getUserApiPrefix() 等 */
export const API_PREFIX = getTaskApiPrefix();

// 默认导出
export default {
	baseURL,
	FORM_CONTENT_TYPE,
	SECRET_KEY,
	OAUTH2_CLIENT,
	IS_MICRO,
	getEnvConfig,
	getArchitectureMode,
	getTaskApiPrefix,
	getUserApiPrefix,
	getAuthApiPrefix,
	getCommonApiPrefix
};